//
//  YXImageLayout.h
//  YXImageBrowserDemo
//
//  Created by guo peng huang on 2021/5/17.
//

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@protocol YXImageLayoutProtocol <NSObject>
@required

/**
 计算图片展示的位置

 @param containerSize 容器大小
 @param imageSize 图片大小 (逻辑像素)
 @param orientation 图片浏览器的方向
 @return 图片展示的位置 (frame)
 */
- (CGRect)yx_imageViewFrameWithContainerSize:(CGSize)containerSize imageSize:(CGSize)imageSize orientation:(UIDeviceOrientation)orientation;

/**
 计算最大缩放比例

 @param containerSize 容器大小
 @param imageSize 图片大小 (逻辑像素)
 @param orientation 图片浏览器的方向
 @return 最大缩放比例
 */
- (CGFloat)yx_maximumZoomScaleWithContainerSize:(CGSize)containerSize imageSize:(CGSize)imageSize orientation:(UIDeviceOrientation)orientation;

@end

typedef NS_ENUM(NSUInteger, YXImageFillType) {
    /// 宽度优先填充满
    YXImageFillTypeFullWidth,
    /// 完整显示
    YXImageFillTypeCompletely
};

@interface YXImageLayout : NSObject <YXImageLayoutProtocol>

/** 纵向的填充方式，默认 YXImageFillTypeCompletely */
@property (nonatomic, assign) YXImageFillType verticalFillType;

/** 横向的填充方式，默认 YXImageFillTypeFullWidth */
@property (nonatomic, assign) YXImageFillType horizontalFillType;

/// 最大缩放比例 (必须大于 1 才有效，若不指定内部会自动计算)
@property (nonatomic, assign) CGFloat maxZoomScale;

/// 自动计算严格缩放比例后，再乘以这个值作为最终缩放比例，默认 1.5
@property (nonatomic, assign) CGFloat zoomScaleSurplus;

@end

NS_ASSUME_NONNULL_END
